Test 1: Login into Sportys as a Paid User and go to Get Current - Pilot's Guide to Airspace course @get_current @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Get Current', exact: true }).waitFor
- locator.getByRole('link', { name: 'Get Current', exact: true }).click
- locator.getByTitle('Airspace').waitFor
- locator.getByTitle('Airspace').click
- page.waitForTimeout
- page.screenshot
- attach "course-screenshot"
- locator.getByLabel('Close').waitFor
- locator.getByLabel('Close').click
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/AIRSPACEREVIEW/volumes)
- apiResponse.json
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/AIRSPACEREVIEW/licenses)
- apiResponse.json
- locator.getByText('Video Progress: 0%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413399/videosViewed/all)
- page.reload
- locator.getByText('Video Progress: 100%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- locator.waitFor(li >> internal:has-text="Review Quiz"i)
- locator.click(li >> internal:has-text="Review Quiz"i)
- locator.getByText('Start', { exact: true }).waitFor
- locator.getByText('Start', { exact: true }).click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- After Hooks
- Worker Cleanup
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
| Status |
Time Taken |
| TimedOut |
60.05s |
Test 2: Login into Sportys as a Paid User and go to Get Current - Aviation Weather course @get_current @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Get Current', exact: true }).waitFor
- locator.getByRole('link', { name: 'Get Current', exact: true }).click
- locator.getByTitle('Aviation Weather').waitFor
- locator.getByTitle('Aviation Weather').click
- page.waitForTimeout
- page.screenshot
- attach "course-screenshot"
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/AVIATION_WEATHER/volumes)
- apiResponse.json
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/AVIATION_WEATHER/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413430/videosViewed/all)
- page.reload
- locator.getByText('Video Progress: 100%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- locator.waitFor(li >> internal:has-text="Review Quiz"i)
- locator.click(li >> internal:has-text="Review Quiz"i)
- locator.getByText('Start', { exact: true }).waitFor
- locator.getByText('Start', { exact: true }).click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('link', { name: 'Request Certificate' }).waitFor
- locator.getByRole('link', { name: 'Request Certificate' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413430?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
| Status |
Time Taken |
| Passed |
56.65s |
Test 3: Login into Sportys as a Paid User and go to Get Current - Flight Review course @get_current @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Get Current', exact: true }).waitFor
- locator.getByRole('link', { name: 'Get Current', exact: true }).click
- locator.getByTitle('Real World Flight Review').waitFor
- locator.getByTitle('Real World Flight Review').click
- page.waitForTimeout
- page.screenshot
- attach "course-screenshot"
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/FLIGHTREVIEW/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.put(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/reset-license/43413491)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413491/videosViewed/all)
- page.reload
- locator.getByText('Video Progress: 100%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- locator.waitFor(li >> internal:has-text="Review Quiz"i)
- locator.click(li >> internal:has-text="Review Quiz"i)
- locator.getByText('Start', { exact: true }).waitFor
- locator.getByText('Start', { exact: true }).click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByText('Request Endorsement').waitFor
- locator.getByText('Request Endorsement').click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413491?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
| Status |
Time Taken |
| Passed |
61.83s |
Test 4: Login into Sportys as a Paid User and go to Get Current - IFR Communications course @get_current @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Get Current', exact: true }).waitFor
- locator.getByRole('link', { name: 'Get Current', exact: true }).click
- locator.getByTitle('IFR Communications').waitFor
- locator.getByTitle('IFR Communications').click
- page.waitForTimeout
- page.screenshot
- attach "course-screenshot"
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/IFR/volumes)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/IFR/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413663/videosViewed/all)
- page.reload
- locator.getByText('Video Progress: 100%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- locator.waitFor(li >> internal:has-text="Review Quiz"i)
- locator.click(li >> internal:has-text="Review Quiz"i)
- locator.getByText('Start', { exact: true }).waitFor
- locator.getByText('Start', { exact: true }).click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('link', { name: 'Request Certificate' }).waitFor
- locator.getByRole('link', { name: 'Request Certificate' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413663?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
| Status |
Time Taken |
| Passed |
55.53s |
Test 5: Login into Sportys as a Paid User and go to Get Current - Instrument Proficiency Check course @get_current @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Get Current', exact: true }).waitFor
- locator.getByRole('link', { name: 'Get Current', exact: true }).click
- locator.getByTitle('Instrument Proficiency Check').waitFor
- locator.getByTitle('Instrument Proficiency Check').click
- page.waitForTimeout
- page.screenshot
- attach "course-screenshot"
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/INSTRUMENT_PROFICIENCY/volumes)
- apiResponse.json
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/INSTRUMENT_PROFICIENCY/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.put(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/reset-license/43413687)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413687/videosViewed/all)
- page.reload
- locator.getByText('Video Progress: 100%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- locator.waitFor(li >> internal:has-text="Review Quiz"i)
- locator.click(li >> internal:has-text="Review Quiz"i)
- locator.getByText('Start', { exact: true }).waitFor
- locator.getByText('Start', { exact: true }).click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('link', { name: 'Request Certificate' }).waitFor
- locator.getByRole('link', { name: 'Request Certificate' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413687?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
| Status |
Time Taken |
| Passed |
57.29s |
Test 6: Login into Sportys as a Paid User and go to Get Current - Takeoff and Landings course @get_current @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Get Current', exact: true }).waitFor
- locator.getByRole('link', { name: 'Get Current', exact: true }).click
- locator.getByTitle('Takeoffs and Landings').waitFor
- locator.getByTitle('Takeoffs and Landings').click
- page.waitForTimeout
- page.screenshot
- attach "course-screenshot"
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/TAKEOFFLANDING/volumes)
- apiResponse.json
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/TAKEOFFLANDING/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.put(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/reset-license/43413754)
- apiResponse.json
- locator.getByText('Video Progress: 0%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413754/videosViewed/all)
- page.reload
- locator.getByText('Video Progress: 100%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- locator.waitFor(li >> internal:has-text="Review Quiz"i)
- locator.click(li >> internal:has-text="Review Quiz"i)
- locator.getByText('Start', { exact: true }).waitFor
- locator.getByText('Start', { exact: true }).click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('link', { name: 'Request Certificate' }).waitFor
- locator.getByRole('link', { name: 'Request Certificate' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413754?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
Screenshot 7
| Status |
Time Taken |
| Passed |
51.97s |
Test 7: Login into Sportys as a Paid User and go to Get Current - VFR Communications course @get_current @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Get Current', exact: true }).waitFor
- locator.getByRole('link', { name: 'Get Current', exact: true }).click
- locator.getByTitle('VFR Communications').waitFor
- locator.getByTitle('VFR Communications').click
- page.waitForTimeout
- page.screenshot
- attach "course-screenshot"
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/VFR/volumes)
- apiResponse.json
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/VFR/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413788/videosViewed/all)
- page.reload
- locator.getByText('Video Progress: 100%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- locator.waitFor(li >> internal:has-text="Review Quiz"i)
- locator.click(li >> internal:has-text="Review Quiz"i)
- locator.getByText('Start', { exact: true }).waitFor
- locator.getByText('Start', { exact: true }).click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('link', { name: 'Request Certificate' }).waitFor
- locator.getByRole('link', { name: 'Request Certificate' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413788?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
| Status |
Time Taken |
| Passed |
47.82s |
Test 8: Login into Sportys as a Paid User and go to Delete License @get_current @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/AIRSPACEREVIEW/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42911529/licenses/43413399?deleteProgress=true)
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/VFR/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/IFR/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/FLIGHTREVIEW/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/INSTRUMENT/licenses)
- apiResponse.json
- After Hooks
Screenshot 1
Screenshot 2
| Status |
Time Taken |
| Passed |
20.06s |